package com.yanjr.common.persistence;

import java.io.Serializable;
import java.util.List;

public interface BaseDao<T> {
	
	public T get(Serializable id);
	
	public T findOne(String sql, Object[] params);
	
	public List<T> findList(String sql, Object[] params);
	
	public List<T> findList(String sql);
	
	public List<T> findAll();
	
	public Page<T> findPage(Page<T> page, String sql, Object... params);
	
	/**
	 * @Description TODO(保存实体)
	 * @param entity
	 * @date 2016年2月26日下午2:17:37
	 * @author yanjr big123@126.com
	 */
	public int save(T entity);
	
	public void save(List<T> entityList);
	
	/**
	 * @Description TODO(更新实体)
	 * @param entity
	 * @date 2016年2月26日下午2:17:53
	 * @author yanjr big123@126.com
	 */
	public int update(T entity);
	
	public void update(List<T> entityList);
	/**
	 * @Description TODO(删除实体)
	 * @param entity
	 * @date 2016年2月26日下午2:18:05
	 * @author yanjr big123@126.com
	 */
	public int delete(T entity);
	/**
	 * @Description 通过id删除实体
	 * @param id
	 * @date 2016年2月26日下午2:18:17
	 * @author yanjr big123@126.com
	 */
	public int delete(Serializable id);
	/**
	 * 删除所有，清空表，真删
	 * 
	 * @date 2016年3月24日 上午9:44:25
	 * @author yanjr big123@126.com
	 */
	public void deleteAll();
	
	/**
	 * 执行insert update delete 语句
	 * 
	 * @param sql
	 * @param params
	 * @return
	 * @author yanjr
	 */
	public int update(String sql, Object... params);
	
	/**
	 * @Description 逻辑删除（假删）
	 * @param id
	 * @return int
	 * @date 2016年3月8日下午3:11:40
	 * @author yanjr big123@126.com
	 */
	public int deleteById(Serializable id);
	
	
	
	public int deleteById(Serializable id, String likeParentIds);
	
	
	

}
